#include"HashTable.h"



//class Date {
//public:
//
//	Date(int year = 1, int month = 1, int day = 1)
//		:_year(year),
//		_month(month),
//		_day(day)
//	{}
//
//	bool operator==(const Date& date) {
//		return (_year == date._year) && (_month == date._month) && (_day == date._day);
//	}
//
//	int _year;
//	int _month;
//	int _day;
//};
//
//struct DateHashFunc {
//	size_t operator()(const Date& date) {
//		size_t hash = date._year;
//		hash *= 131;
//
//		hash += date._month;
//		hash *= 131;
//
//		hash += date._year;
//		hash *= 131;
//
//		return hash;
//	}
//};
//
//int main() {
//
//	HashTable<int, int> ht1;
//	ht1.Insert({ 19,19 });
//	ht1.Insert({ 30,30 });
//	ht1.Insert({ 5,5 });
//	ht1.Insert({ 3,3 });
//	ht1.Insert({ 6,6 });
//	ht1.Insert({ 13,13 });
//	ht1.Insert({ 20,20 });
//	ht1.Insert({ 21,21 });
//	ht1.Insert({ 12,12 });
//	ht1.Insert({ 24,24 });
//	ht1.Insert({ 96,96 });
//	ht1.Insert({ 149,149 });
//
//	cout << ht1.Erase(24) << endl;
//	cout << ht1.Erase(24) << endl;
//
//
//	HashTable<string, int> ht2;
//	ht2.Insert({ "abcdefgh", 2 });
//	ht2.Insert({ "abcdehgf", 3 });
//	ht2.Insert({ "abcde", 4 });
//	ht2.Insert({ "abcdefg", 5 });
//	ht2.Insert({ "abcdj", 6 });
//	ht2.Insert({ "abcfgj", 7 });
//	ht2.Insert({ "abdefgj", 8 });
//	ht2.Insert({ "bcdefgj", 9 });
//	ht2.Insert({ "abcdefghijk", 10 });
//
//
//	HashTable<Date, int, DateHashFunc> ht3;
//	ht3.Insert({ {2025,5,11 }, 1});
//	ht3.Insert({ {2025,11,5 }, 2 });
//	ht3.Insert({ {2025,12,11 }, 3 });
//	ht3.Insert({ {2025,11,12 }, 4 });
//	ht3.Insert({ {2025,11,11 }, 5 });
//	ht3.Insert({ {2025,5,5 }, 6 });
//
//
//
//
//	return 0;
//}

#include<time.h>
#include<stdlib.h>

int main() {

	srand((unsigned int)time(0));

	HashTable<int, int> ht;

	for (int i = 0; i < 100; ++i) {
		int randomNum = rand() % 100000 + i; 
		if (i == 10) randomNum = 5670;
		size_t size = ht.Capacity();
		ht.Insert({ randomNum,randomNum });
	}

	
	HashTable<int, int> ht1 = ht;
	
	HashTable<int, int> ht3;
	ht = ht3; 

	return 0;
}